Воу... Джаз не обязательно изучать, всё это можно сделать и на ГУИ, тем более такую простую способность. На этом сайте есть тема "Заклинания на заказ". Заказывай, жди, получай, изучай. Если прям горит, могу сделать для тебя сам.
Во-первых, что есть "локальный таймер" ? Это таймер записанный в локальную переменную?
Во-вторых, зачем тебе точка, если ты используешь XY ? Работай с ними
В-третьих, да. Использование в течении всей игры одной заранее созданной точки вызывает меньше нагрузки чем постоянно создание и удаление новых (кто-то там доказывал на примере и цифрами что от ремувнутых точке всё равно остаётся шлак в памяти...)
(IsUnitType(GetEnumUnit(), UNIT_TYPE_TOWNHALL).
Ну ещё нужно проверить, является ли выбранная ратуша противником конкретного игрока.
Если да, то послать туда войска и т. д.
Событие никак и никогда не удаляется, поэтому будет висеть.
Лагать не должно, т.к. событие просто висит в памяти и вар может только вылететь с fatal'ом при нехватки памяти. Для этого этих событий должно быть десятки тысяч, наверное....
Ну какая попытка, такая и помощь: делаешь таймер в период 1 сек. Забиваешь для него функцию на текстаг+ переменная, считающая время. ВУАЛЯ! Ой стоп. У тебя же так же написано. Реализуй- поможем.
сделать базу даных по названию...
строка[1] = "пехотинец"
строка[2] = "паладин"
тип юнита[1] = пехотинец
тип юнита[2] = паладин
цыкл
если введенная строка == строка[А]
создать юнита тип юнита[А]
Нужно создать переменную-юнит (массив) ну как Heroes на первом снимке. Сохранить soul первого игрока с индексом 1, второго - 2 и т. д. (Soul[1], Soul[2]...). И вместо Triggering unit использовать эту переменную, а в качестве индекса - номер триггерного игрока.
Такс я всё проверил, к сожалению при отрицательных значениях интеллекта и силы - дегенерации не наступает, так что всё враки, игровые константы на 0, регена нет, пилите триггерный реген и всё ок, следовательно всё получится. Так что я не понимаю проблемы.
у Extremator, как я понял на тестах не стоит константа на регенерацию в 0, поэтому и стандартный реген работет в отрицательную сторону по той же формуле Герой моментально умирает при достижении 0 максимального хп, я думал что фатальнёт
событие "юнит атакован" срабатывает перед каждой атакой в момент замаха
событие "юнит получает урон" (Specific unit event) срабатывает перед нанесением урона, но это событие нужно добавлять другим триггером отдельно для каждого юнита (Trigger - Add new event)
Дать/отнять способность легко. А вот как отследить это, что он отошел и прочее. Надо подумать, нужно делать так, чтобы утечек, и нагрузок было меньше. Смотря как делать:
юнит привязан к участку
Если привязан юнит к одному участку, как здание например. То можно по событию - юнит входит / юнит выходит в область. Это типа как в Survival Chaos, там башеньки всю игру стоят, пока всех не уничтожат.
не может привязан к одному участку. Но есть несколько способов:
Вот отследить еще можно "событие - юнит замечен в радиусе ...", только вот нельзя отследить когда отходит, только когда входит. Примечательно, тем то не привязан к участку.
Проверяешь периодически расстояние между юнитом и героем. Если расстояние больше предназначенного, то убавляем защиту. В этом нам помогает группа +pick units и подсчет кол-ва юнитов.
Аналогично как в во втором способе, но может еще попробовать с аурой. Проверяешь есть аура. нет ауры.
что за костыли блин
событие - приводит способность в действие
условие - применённая способность == божественный щит
действия:
unit u=GetTriggerUnit()
SetUnitVertexColor(u,0,0,0,255)
TriggerSleepAction(15) // здесь указываем время действия способности
SetUnitVertexColor(u,255,255,255,255)
если время действия зависит от уровня то юзай арифметику как писали выше
в твоём случае это 2 + (уровень способности * 2)
WW перестаёт становиться DIS, когда у героя более одной абилки WW
типа что бы ты мог активировать другой, пока работает первый... но разблокировка идёт на все сразу (и на сам себя тоже)
Недавно сделал человеку универсальный триггер для таких случаев, который работает и в алтаре, и в таверне.
Событие: Юнит входит в область (Вся игровая карта)
Условие: (Триггеринг юнит) равно Герой равно Да
Действие: Игрок - Установить лимит юнита (тип юнита (Триггеринг юнит)) для игрока (Owner of unit (Триггеринг юнит)) в 1
Absolute, есть событие загрузки игры, можешь поставить там логическая_переменная=Да, а в действиях с удалением молнии поставить Если/То/Иначе, где Если условие логическая_переменная=Нет, То удалить молнию, Иначе ничего не делать
Ну я был бы удивлен если бы код работал даже в сингле, гуи карта, много утечек, куча переодиков, так на первый взгляд код не учитывает что игроков будет много и все они что то будут делать. Так же возможны десинхи из-за кривого кода, это и на гуи бывает... Огромное кол-во вейтв и циклов с вейтами, это сразу убирайте - в мультиплеере это работать не будет.
Увы конечно интересная задумка карты, но реализация очень слабая и на игру по сети не претендует, более грамотно продумывайте код и не плодите утечки, то их у вас овер дофига что равно игра закроется с фаталом после превышения лимита памяти.
у каждого формата свой алгоритм,вот из за этого такая разница ,особенно на вес блп влияет прозрачность что лутше прозрачные места которые не затрагивает меш красить чёрным цветом
решил проблему костылём - дал возможность рабочему строить только башню - шаблонку, которая в свою очередь может улучшаться в две указанные башни. Взаимосвязь поставить только от башни - шаблонки. Лимит поставил на башню шаблонки.
Но тема не закрыта. Хотелось бы узнать можно ли решить проблему без костылей.
magistor8, получится цензурацензура
да и всеравно придётся перебирать всех юнитов в группе чтобы узнать их количество
только вместо одной строки с ифом у тебя будет вложенный цикл с проверкой юнитов
так что делай как сказали ssbbssc и l_Avenger_l (они походу не въехали что предлагают один и тот же вариант)
если надо знать сколько юнитов каждого (а не 1 конкретного) типа в группе то их вариант можно немного улучшить
вместо обычной целой переменной юзай массив целых
и в цикле делай проверку что если юнит принадлежит первому типу то массив[1]++ (увеличить значение на единицу)
если второму то массив[2]++
и т.д.
в результате за 1 пробег цикла ты получишь массив который будет содержать количество юнитов каждого типа
а если ты хочешь ещё оптимальнее то вместо проверки "если юнит принадлежит n-ному типу" юзай бд на основе хеш таблицы которая по равкоду юнита будет хранить его индекс в массиве
либо любой другой способ преобразовать равкод юнита в целое число которое >=0 и <8192
Таурен Тауреныч, так ты ж его мгновенно удаляешь. Зачем добавлять и сразу убирать способность? Или удаляется предмет, а не скилл?
Попробуй удалять хотя бы через 0.00 сек.
Прочитал твой второй вопрос по этой теме. Всё-таки да, дело было в мгновенном удалении.
Вот, слегка модифицировал твой вариант. Лучше, найти какую-нибудь готовую систему, ибо предметы всегда будут перемещаться, да и с полным инвентарем не корректно работает.
Патиссончик, про центр области не заметил
точка каждый раз создаётся заново и это утечка Патиссончик, есть прога на сайте для записи логов
так же есть дебаг через прелоад на сайте
вот счётчик утечек
xgm.guru/p/100/192363?postid=352424#comment2с помощью приказов. Используй нктивки с имитацией' там где с магазином. Ещё нужно кучу проверок делать (есть ли ресурсы, хватает пищи и др). Вдруг пригодится
Есть две разные вещи - тренировка и покупка (найм). При тренировке ты можешь заставить здание само начать обучать войска' а вот при найме нужно чтобы к магазину подошёл юнит и он был выбран магазином (точно не уверен нужен ли здесь нацеливать выбор магазинчика, через приказ smart кажись нацеливает выборку на юнита, если правильно понял пример Warden. Приказ возвращает boolean, если что). Смотри в ссылке пример Warden-a
Понимаешь, вроде когда герой выбирает через smart магазин, у игрока на панеле по идее должны быть изображены итемы или юниты, которых продают. Вроде герой должен выбирать магазин, а не наоборот?! Странно. Хотя, попробуй ещё героем выбрать. Хотя это комп.
Бтв, про сбор команды - для продвинутых сущностей нередко исправлять за другими оказывается тяжелее, чем делать самому, важно создать максимально комфортные условия для созидания, вот для чего деньги не лишние, а уж дело и самому можно делать.
И, да, тема-то не про то, надо это или не надо, а про то, как лучше это сделать, я про это и в стартовом сообщении написал.
Я на крайний сам вопрос по варианту 3 проверю и/или будет сделан выбор между третьим вариантом, вторым, каким-то ещё и отказом от Cooldown Reduction, но если кто поможет - спасибо.
Лимит операций, обычно это беда настигает заядлых гуишников.
На jass обычно нету таких проблем.
Создайте таймер с периодом .00 сек и запускайте им функции инициализации триггеров.
функция типа InitTrig_Имя триггера - это функция инициализации триггера, она вызывается из функции InitCustomTriggers, но если этих вызовов очень много то функция упирается в лимит операций и поток завершается так и не создав все триггеры.
Если в триггере много действий, загружающих память, то лучше не использовать малый период. А если в нём ещё утечки памяти, то рано или поздно лаги сделают игру невозможной.
По сути, и таймер, и периодическое событие запускают действия в определённое время, то есть действуют одинаково. Смотри, что тебе удобнее.
» WarCraft 3 / Функция ResetTrigger()
» WarCraft 3 / Вопрос по хеш таблице
» WarCraft 3 / Способность которая действует по все карте
» WarCraft 3 / Хочу узнать структуры карт.
» WarCraft 3 / Движение, jass
» WarCraft 3 / Как делать проверку на...
» WarCraft 3 / Динамический триггер ?!
» WarCraft 3 / Как сделать триггер по типу..
» WarCraft 3 / событие нажатие на юнита
» WarCraft 3 / Smart stop
» WarCraft 3 / Отрицательный реген
» WarCraft 3 / Отслеживание приказов
» WarCraft 3 / Disease cloud
» WarCraft 3 / Помогите создать способность
» WarCraft 3 / Кол-во героев
» WarCraft 3 / Загрузка игры ?
» Администрация XGM / Ссылки на статьи в профиле пользователя
» WarCraft 3 / Перевод
» WarCraft 3 / Группа типов юнитов
» WarCraft 3 / Через что экспортировать в mdx?
» WarCraft 3 / Юнит получает предмет
» WarCraft 3 / Проблемы с регенерацией
» WarCraft 3 / Таверна
» WarCraft 3 / Таймер или триггер таймер что лучше?